有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从嵌套的switch语句退出到外部switch语句

我用Java创建了一个菜单,其中每个选项都有另一个菜单。我想知道我是否可以从内部菜单退出回到主菜单

编辑:添加了主菜单选项

System.out.println("Main Menu");
    System.out.println("1. Hourly Employees");
    System.out.println("2. Salary Employees");
    System.out.println("3. Commission Employees");
    System.out.println("4. Weekly Calculations");
    System.out.println("5. Exit Program");
while(true){
    switch(choice){
        case 1: 
            HourlyEmployeeChoice HEC = new HourlyEmployeeChoice();
            //HourlyEmployeeChoice is a class with HEmployeeMenu() method 
            HEC.HEmployeeMenu();
            break;
        //case 2-4: to be added later
        case 5:
            System.out.println("Goodbye!");
            System.exit(0);
    }
    }

这是我的主菜单。我只为第一个选项和退出选项编写了代码

public void HEmployeeMenu(){
    while(true){
        //submenu options
        int hourlyChoice = userChoice.nextInt();
            switch(hourlyChoice) {
                case 1: 
                    //code
                    break;
                case 2: 
                    //code
                    break;
                case 3:
                    //code
                    break;
                case 4: //exit submenu
                    return;
                default:
                    System.out.println("Please make a valid selection"); 
            }
    }
}

这是我放入第二条switch语句的方法。选择选项4(退出子菜单)将刷新到子菜单,而不是主菜单。我想这是因为我对子菜单使用了while循环。但我不想取消这个选项,因为我希望在完成案例1-3后能够继续做出选择


共 (1) 个答案

  1. # 1 楼答案

    我相信你现在的问题是

    while(true){
      // HERE
      switch(choice){
    

    您需要添加代码以再次获取choice,否则它将始终是您第一次输入的内容

    也就是说,将主菜单显示和choice输入移动到类似的位置

    while(true){
      System.out.println("Main Menu"); // <  Added based on your edit.
      System.out.println("1. Hourly Employees");
      System.out.println("2. Salary Employees");
      System.out.println("3. Commission Employees");
      System.out.println("4. Weekly Calculations");
      System.out.println("5. Exit Program");
      int choice = userChoice.nextInt(); // <  HERE
      switch(choice){